This invention relates generally to servo speed control circuits for direct current motors and, more particularly, to a circuit for independently correcting motor velocity at each unit of displacement.
Precise displacement control of DC motors for short moves is extremely difficult when encountering varying loads during drive periods. An example of such loading is that encountered in driving printer carriages to incremently advance forms, particularly multi-part fan folded forms, through the print station. The distance paper is to be advanced is not uniform and the form weight or folds change the frictional drag on the drive motors. As a consequence, accurate positioning has not been easy to attain.
The usual current control circuit uses displacement feedback signals generated from the motor shaft or driven load to indicate the attainment of a unit of motion. Actual signal frequency is compared with that of a desired frequency and corrective changes in drive current are applied to the motor. Changes can be made in the current level or the width of applied pulses can be modulated to attain the required velocity. These circuits work well in situations where the motor is continuously driving a load because the velocity changes usually occur and are corrected gradually over several signal periods.
One example of such a circuit is that described in U.S. Pat. No. 4,259,698 in which a continuously running motor is controlled through a phase locked loop having a voltage controlled oscillator whose output is divided by the control factor that varies according to the motor velocity. With this type of circuit the phase lock loop tends to act like a filter and several displacement signals are required to produce an effective velocity change since the change occurs gradually. Another example is the circuit shown in U.S. Pat. No. 4,371,819 in which a mircroprocessor senses displacement signals to determine the time between consecutive signals and averages the time over a predetermined number of signals. The results are used to alter the duty cycle of the motor energization. Again, the correction is slow. Another example is shown in U.S. Pat. No. 4,400,654 in which the displacement signal is taken from a motor shaft once each revolution and used to calculate a corrective duty cycle for each of the energization periods of the multi-winding motor in the following revolution. The foregoing examples all use pulse width modulation as a control for the motors.
When a DC motor is used for incremental movement of a load, there is little time available for making corrections over several shaft displacement units or emitter periods. Some moves will approximate only a small fraction of a revolution of the motor shaft, including the acceleration and deceleration phases. A corrective change in those situations is necessary as soon as the deviation from the desired velocity is sensed. This requires that correction be made for the interval between successive emitter pulses. If a microprocessor is to be used to control stopping, for example, the velocity at which the stop phase begins must be assured.
Microprocessors are also often used to control the application of motor current. With high speed, incremental positioning applications there are occasions which the microprocessors cannot stay current with the demand for monitored control because it cannot service the interrupts at the frequency with which they occur. In these situations the microprocessor must be dedicated to a single task, thus making the control circuit prohibitively expensive.